Cisco Router OSPF Design and Implementation Guide William Parkhurst, PhD, CCIE $54.95 0-07-048626-3 |
![]() ![]() |
Chapter: 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 |
Reserve your copy at a Beta Bookstore near you! |
Contact Bet@books © 1998 The McGraw-Hill Companies, Inc. All rights reserved. Any use of this Beta Book is subject to the rules stated in the Terms of Use. |
The Interior Gateway Routing Protocol (IGRP) is a Cisco proprietary routing protocol that is based on RIP, which means IGRP is a distance vector interior routing protocol. RIP uses a hop count metric and IGRP uses a dimensionless cost metric composed of five parameters, bandwidth, delay, reliability, loading, and mtu. The IGRP metric allows for a larger network diameter than RIP and provides more flexibility than RIP for route determination, since the IGRP metrics can be adjusted depending on the network topology. IGRP utilizes split horizon, hold-downs, and poison reverse for route stability. IGRP also uses flash updates which send routing information when a network or metric changes before the next routing table update period.
IGRP
The network of figure 9.1 will be used to demonstrate the various configuration commands possible with IGRP using the configuration below.
Router r1 Configuration Router r2 Configuration
hostname r1 hostname r2
enable password cisco enable password cisco
interface Loopback0 interface Loopback0
ip address 172.16.1.1 255.255.255.0 ip address 172.16.4.1 255.255.255.0
interface Loopback1 interface Loopback1
ip address 172.16.2.1 255.255.255.0 ip address 172.16.5.1 255.255.255.0
interface Ethernet0 interface Ethernet0
ip address 172.16.3.1 255.255.255.0 ip address 172.16.3.2 255.255.255.0
As you can see in Figure 9.1 we only need one physical interface on each router. The other networks in the examples that follow will be simulated using loopback interfaces. The first step in configuring IGRP is to start the IGRP routing process. This is accomplished by entering configuration mode and enabling the IGRP process.
r1#configure terminal
Enter configuration commands, one per line. End with CNTL/Z.
r1(config)#router igrp ?
<1-65535> Autonomous system number
r1(config-router)#router igrp 100
r1(config-router)#^Z
The IGRP routing process must be assigned an autonomous system number in the range 1 65535. This should actually be called a routing process number since this number does not have to match your autonomous system number. Multiple IGRP routing processes can be running on the same router but only processes with the same number will exchange routing updates. As with RIP, IGRP needs to know which networks to advertise. For r1, we want to advertise networks 172.16.1.0, 172.16.2.0, and 172.16.3.0. The network command is used to inform IGRP which networks to advertise in the routing updates.
r1(config-router)#network 172.16.1.0
r1(config-router)#network 172.16.2.0
r1(config-router)#network 172.16.3.0
r1(config-router)#^Z
At this point, list the current router configuration to see how we have configured the basic IGRP routing process.
router igrp 100
network 172.16.0.0
Why does the configuration show only one network command when we entered three? I mentioned that IGRP is based on RIP and does not transmit subnet masks in the routing updates. You can only enter major network numbers with the IGRP network configuration command. Since all of r1s attached networks belong to the class B network 172.16.0.0, this is the network that IGRP will advertise. The network command also determines which interfaces will send and receive IGRP routing updates. Since all of our networks belong to 172.16.0.0 IGRP will send and receive updates on all the interfaces. The configuration for r2 will be identical to the configuration for r1.
r2onfig)#router igrp 100
r2(config-router)#network 172.16.0.0
r2(config-router)#^Z
How many routes will IGRP advertise is this situation, one or three? Like RIP v1, IGRP will only advertise subnets of a major network out on interface if those networks have the same subnet mask as the interface on which they will be transmitted. Since all of our networks have an identical 24-bit subnet mask, IGRP will advertise three routes and the receiving router, r2, will assume that all the advertised networks it receives for major network 172.16.0.0 have the same subnet mask as the interface and which the routes were received. To determine if r1 and r2 are exchanging routing updates use the command show IP route on routers r1 and r2.
r1#show ip route
Codes: C - connected, S - static, I - IGRP, R - RIP, M - mobile, B - BGP
D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area
E1 - OSPF external type 1, E2 - OSPF external type 2, E - EGP
i - IS-IS, L1 - IS-IS level-1, L2 - IS-IS level-2, * - candidate default
U - per-user static route
Gateway of last resort is not set
172.16.0.0/16 is subnetted, 5 subnets
I 172.16.4.0 [100/610] via 172.16.3.2, 00:00:58, Ethernet0
I 172.16.5.0 [100/610] via 172.16.3.2, 00:00:58, Ethernet0
C 172.16.1.0 is directly connected, Loopback0
C 172.16.2.0 is directly connected, Loopback1
C 172.16.3.0 is directly connected, FastEthernet8/0
r2#show ip route
Codes: C - connected, S - static, I - IGRP, R - RIP, M - mobile, B - BGP
D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area
E1 - OSPF external type 1, E2 - OSPF external type 2, E - EGP
i - IS-IS, L1 - IS-IS level-1, L2 - IS-IS level-2, * - candidate default
U - per-user static route
Gateway of last resort is not set
Gateway of last resort is not set
172.16.0.0/16 is subnetted, 5 subnets
C 172.16.4.0 is directly connected, Loopback0
C 172.16.5.0 is directly connected, Loopback1
I 172.16.1.0 [100/610] via 172.16.3.1, 00:01:23, Ethernet0
I 172.16.2.0 [100/610] via 172.16.3.1, 00:01:23, Ethernet0
C 172.16.3.0 is directly connected, Ethernet0
Notice that r1 and r2 have three directly connected routes and two routes that have been learned from IGRP. Each entry in the routing table contains the following information:
This is the minimum configuration required to enable IGRP. The IP routing table contains the information necessary for each router to determine how to route a packet to a destination network. For the connected networks the router needs only to forward a packet destined for a host on the network out the directly connected interface. For packets destined for a network not on a directly connected interface the router must determine which interface should be used to forward the packet.
What happens if the subnet masks are not identical? Assume that the two loopback networks on r1, Loopback0 and Loopback1, will have no more than 14 hosts each. We can use VLSM to sub-subnet network 172.16.1.0 into two networks using a 28-bit subnet mask as shown in figure 9.2.
Router r1 configuration changes
interface Loopback0
ip address 172.16.1.17 255.255.255.240
interface Loopback 1
ip address 172.16.1.33 255.255.255.240
How will this affect the IGRP updates? If we examine the routing table for r2 we see that the new sub-subnetted routes do not appear. The clear ip route * command is used because IGRP will remember the old routes for ten and one half minutes. This command will clear the IP routing table and force a routing table update to we can see the affect of the router configuration changes.
r2#clear ip route *
r2#show ip route
172.16.0.0/16 is subnetted, 3 subnets
C 172.16.4.0 is directly connected, Loopback0
C 172.16.5.0 is directly connected, Loopback1
C 172.16.3.0 is directly connected, Ethernet0
R1 will not advertise networks 172.16.1.16 and 172.16.1.32 out network 172.16.3.0 since the subnet masks for these networks are unequal. If IGRP is going to be deployed on a network than the networks that you want to advertise must all have the same subnet masks if they are contained in the same major network number. For this example the major network number is 172.16.0.0. What if these sub-subnetted networks use a different major network number, 173.16.0.0, as shown in figure 9.3?
Router r1 configuration changes
interface Loopback0
ip address 173.16.1.17 255.255.255.240
interface Loopback 1
ip address 173.16.1.33 255.255.255.240
router igrp 100
network 172.16.0.0
network 173.16.0.0
r2# clear ip route *
r2#show ip route
172.16.0.0/16 is subnetted, 3 subnets
C 172.16.4.0 is directly connected, Loopback0
C 172.16.5.0 is directly connected, Loopback1
C 172.16.3.0 is directly connected, Ethernet0
I 173.16.0.0/16 [100/610] via 172.16.3.1, 00:00:03, Ethernet0
Notice that r1 is advertising network 173.16.0.0 enabling r2 to be able to reach the two 173.16 networks on r1. The subnet mask is different that the mask used for the 172.16 network, but since these are different major network numbers, IGRP will advertise them. Also notice that IGRP automatically summarizes the network 173.16.0.0. What happens if we assign networks for the sub-subnetted network 173.16.0.0 on r2 (Figure 9.4).
Router r2 configuration changes
interface Loopback0
ip address 173.16.1.49 255.255.255.240
interface Loopback 1
ip address 173.16.1.65 255.255.255.240
router igrp 100
network 172.16.0.0
network 173.16.0.0
The routing table for r2 now contains
r2#clear ip route *
r2#show ip route
172.16.0.0/16 is subnetted, 1 subnets
C 172.16.3.0 is directly connected, Ethernet0
173.16.0.0/16 is subnetted, 2 subnets
C 173.16.1.48 is directly connected, Loopback0
C 173.16.1.64 is directly connected, Loopback1
Where are the routes to 173.16.1.16 and 173.16.1.32? The IGRP and RIP algorithms operate similarly. Router r1 is advertising the route 173.16.0.0 with a cost of 610 and router r2 is also directly connected to network 173.16.0.0 so from r2s perspective it has a better route to 173.16.0.0 and so r2 will ignore the route to 173.16.0.0 that r1 is advertising. Of course this situation is not common but it does illustrate the problems that can occur will IGRP since IGRP does not advertise subnet information in the routing updates.
This scenario is of course very unlikely. Using an entire class B network for the common network between r1 and r2 does not make sense but does illustrate the behavior of IGRP. What would happen if the link between r1 and r2 were on the same major network as the other interfaces (Figure 9.5)?
As long as the subnet mask used is consistent then all the routes will be propagated. Assume we have changed the addresses of the common interfaces to 173.16.1.82/28 (r1) and 173.16.1.81/28 (r2). The routing tables for r1 and r2 will contain routes to all the networks in the configuration. Of course this is not really VLSM since all the subnet masks are identical.
Router r1 configuration changes Router r2 configuration changes
interface Ethernet 0 interface Ethernet 0
ip address 173.16.1.81 255.255.255.240 ip address 173.16.1.82 255.255.255.240
router igrp 100 router igrp 100
no network 172.16.0.0 no network 172.16.0.0
r1#clear ip route *
r1#show ip route
173.16.0.0/16 is subnetted, 5 subnets
I 173.16.1.48 [100/610] via 173.16.1.82, 00:00:08, FastEthernet8/0
C 173.16.1.32 is directly connected, Loopback1
C 173.16.1.16 is directly connected, Loopback0
C 173.16.1.80 is directly connected, FastEthernet8/0
I 173.16.1.64 [100/610] via 173.16.1.82, 00:00:09, FastEthernet8/0
r2#clear ip route *
r2#show ip route
173.16.0.0/16 is subnetted, 5 subnets
C 173.16.1.48 is directly connected, Loopback0
I 173.16.1.32 [100/610] via 173.16.1.81, 00:00:01, FastEthernet0/0
I 173.16.1.16 [100/610] via 173.16.1.81, 00:00:01, FastEthernet0/0
C 173.16.1.80 is directly connected, FastEthernet0/0
C 173.16.1.64 is directly connected, Loopback1
We will now return to the network of figure 9.1 and examine the other commands available for configuring IGRP. These commands can be listed by entering IGRP configuration mode and typing a question mark.
r1(config)#router igrp 100
r1(config-router)#?
Router configuration commands:
r1(config)#router igrp 100
r1(config-router)#?
Router configuration commands:
default-information Control distribution of default information
default-metric Set metric of redistributed routes
distance Define an administrative distance
distribute-list Filter networks in routing updates
exit Exit from routing protocol configuration mode
help Description of the interactive help system
maximum-paths Forward packets over multiple paths
metric Modify IGRP routing metrics and parameters
neighbor Specify a neighbor router
network Enable routing on an IP network
no Negate or set default values of a command
offset-list Add or subtract offset from IGRP or RIP metrics
passive-interface Suppress routing updates on an interface
redistribute Redistribute information from another routing protocol
timers Adjust routing timers
traffic-share Algorithm for computing traffic share for alternate routes
validate-update-source Perform sanity checks against source address of routing updates
variance Control load balancing variance
Command: default-information
Purpose: Control distribution of default information
This command is covered in chapter 13, Route redistribution.
Command: default-metric
Purpose: A router may be running more that one IP routing protocol (RIP, IGRP, EIGRP or OSPF). Each routing protocol has a different metric, for example RIP has a hop count, OSPF has a dimensionless cost and IGRP has a cost based on five metrics. When injecting routes from one routing protocol to another, the route metric needs to be converted from one protocol to another. The default-metric command is used to perform this conversion. This will be covered in detail in chapter 13.
Command: distance
Purpose: Used to adjust the administrative distance of a route.
r2(config)#router igrp 100
r2(config-router)#distance ?
<1-255> Administrative distance
Enter an administrative distance in the range 1 255. The default for IGRP is 100. The administrative distance is used when more than one routing protocol is active on a router. For example, if we are running IGRP and RIP and each protocol has a route to the same network the IGRP route would be preferred because IGRP has a lower administrative distance (100) than RIP (120). We can force the IGRP route to not be chosen by setting the administrative distance to be higher than that for RIP.
r2(config-router)#distance 130 ?
A.B.C.D IP Source address
<cr>
Choosing <cr> will set the administrative distance to all routes learned from IGRP to the number entered, in this case, 130. This can be seen by examining the IP routing table.
r2#show ip route
172.16.0.0/16 is subnetted, 5 subnets
C 172.16.4.0 is directly connected, Loopback0
C 172.16.5.0 is directly connected, Loopback1
I 172.16.1.0 [130/610] via 172.16.3.1, 00:00:50, FastEthernet0/0
I 172.16.2.0 [130/610] via 172.16.3.1, 00:00:50, FastEthernet0/0
C 172.16.3.0 is directly connected, FastEthernet0/0
If you want to adjust the administrative distance for a particular IP network use the form
r2(config-router)#distance 130 172.16.0.0 ?
A.B.C.D IP address mask
r2(config-router)#distance 130 172.16.0.0 0.0.255.255 ?
<1-99> IP Standard access list number
<cr>.
Entering <cr> will apply the new administrative distance only to network 172.16.0.0. Notice that the IP address mask is the "reverse" of what is used for a subnet mask. This is the same style used for IP access-lists that were discussed in chapter 7. Since r2 is only learning about network 172.16.0.0 from r1, this has the same effect as applying the administrative distance to all networks learned from IGRP. Finally, we can choose the routes that will have their administrative distance modified through the use of an IP access-list. Assume we want to change the administrative distance of the route to 172.16.1.0 to 130 but not affect the route to 172.16.2.0. First we would use the IGRP command
r2(config-router)#distance 130 172.16.0.0 0.0.255.255 ?
<1-99> IP Standard access list number
<cr>
r2(config-router)#distance 130 172.16.0.0 0.0.255.255 1 ?
<cr>
r2(config-router)#distance 130 172.16.0.0 0.0.255.255 1
r2(config-router)#^Z
The final step is to create an IP access-list that informs IGRP to adjust the administrative distance of 172.16.1.0 but leave the administrative distance of 172.16.2.0 set to 100. Without an access-list but with the distance command shown above, all the routes learned for network 172.16.0.0 will have their administrative distance set to 130 as shown. This is the default behavior.
r2#clear ip route *
r2#sh ip route
172.16.0.0/16 is subnetted, 5 subnets
C 172.16.4.0 is directly connected, Loopback0
C 172.16.5.0 is directly connected, Loopback1
I 172.16.1.0 [130/610] via 172.16.3.1, 00:00:01, FastEthernet0/0
I 172.16.2.0 [130/610] via 172.16.3.1, 00:00:01, FastEthernet0/0
C 172.16.3.0 is directly connected, FastEthernet0/0
The access-list needed to adjust only the 172.16.1.0 is
r2(config)#access-list 1 ?
deny Specify packets to reject
permit Specify packets to forward
r2(config)#access-list 1 permit ?
Hostname or A.B.C.D Address to match
any Any source host
host A single host address
r2(config)#access-list 1 permit 172.16.1.0 0.0.0.225 ?
<cr>
r2(config)#access-list 1 permit 172.16.1.0 0.0.0.225
r2(config)#^Z
Notice that we did not have to use a permit any statement at the end of the access-list. A normal IP access-list always has an implicit deny any as the last statement. This is true in this case but the administrative distance is only affected for those routes that have a matching permit statement, so in the case the implicit deny any in the access-list has no effect. The new IP routing table contains
r2#clear ip route *
r2#sh ip route
172.16.0.0/16 is subnetted, 5 subnets
C 172.16.4.0 is directly connected, Loopback0
C 172.16.5.0 is directly connected, Loopback1
I 172.16.1.0 [130/610] via 172.16.3.1, 00:00:01, FastEthernet0/0
I 172.16.2.0 [100/610] via 172.16.3.1, 00:00:01, FastEthernet0/0
C 172.16.3.0 is directly connected, FastEthernet0/0
Notice that route 172.16.1.0 is the only route that has an adjusted administrative distance.
If we want to set the administrative distance of 172.16.1.0 to 130 and the administrative distance of 172.16.2.0 to 140, can we use two distance commands with two access lists? Sometimes. When we enter the second distance command under rip configuration, the second distance command will overwrite the first. We can have two distance commands if the major networks are different. In summary, we can set the administrative distance of any number of routes on the same major network to any value between 1 and 255, but it has to be the same value. Only those routes that are permitted in the access-list will have their administrative distance modified.
Command: distribute-list
Purpose: Used to filter incoming or outgoing routing updates.
A distribute list is used to delete routes from either incoming or outgoing IGRP updates. Assume router r2 wants to delete network 172.16.1.0 that is being advertised by r1. First we need to assign a distribute-list to the IGRP process on router r2.
We can either use a standard or an extended IP access-list, which gives us many possibilities.
r2(config)#router igrp 100
r2(config-router)#distribute-list ?
<1-199> A standard IP access list number
r2(config-router)#distribute-list 1 ?
in Filter incoming routing updates
out Filter outgoing routing updates
r2(config-router)#distribute-list 1 in ?
Ethernet Ethernet IEEE 802.3
Loopback Loopback interface
Null Null interface
<cr>
r2(config-router)#^Z
Now create the access-list to block the 172.16.1.0 route.
access-list 1 deny 172.16.1.0 0.0.0.255
access-list 1 permit any
We need the permit any statement in a distribute list otherwise the implicit deny all at the end of the list would filter out all routes learned overall all interfaces. The routing table for r2 now contains
r2#clear ip route *
r2#show ip route
172.16.0.0/16 is subnetted, 4 subnets
C 172.16.4.0 is directly connected, Loopback0
C 172.16.5.0 is directly connected, Loopback1
I 172.16.2.0 [130/610] via 172.16.3.1, 00:00:01, FastEthernet0/0
C 172.16.3.0 is directly connected, FastEthernet0/0
Notice that the 172.16.1.0 route from r1 has been filtered. The access-list(s) that are configured for IGRP can be seen by listing the configuration or by using the command show ip protocols.
r2#show ip protocols
Routing Protocol is "igrp 100"
Sending updates every 90 seconds, next due in 43 seconds
Invalid after 270 seconds, hold down 280, flushed after 630
Outgoing update filter list for all interfaces is not set
Incoming update filter list for all interfaces is 1
Default networks flagged in outgoing updates
Default networks accepted from incoming updates
IGRP metric weight K1=1, K2=0, K3=1, K4=0, K5=0
IGRP maximum hopcount 100
IGRP maximum metric variance 1
Redistributing: igrp 100
Routing for Networks:
172.16.0.0
Routing Information Sources:
Gateway Distance Last Update
172.16.3.1 130 00:00:14
Distance: (default is 100)
Address Wild mask Distance List
172.16.0.0 0.0.255.255 130 1
r2(config)#router igrp 100
r2(config-router)#distribute-list ?
<1-199> A standard IP access list number
r2(config-router)#distribute-list 100 ?
in Filter incoming routing updates
out Filter outgoing routing updates
r2(config-router)#distribute-list 1 in ?
Ethernet Ethernet IEEE 802.3
Loopback Loopback interface
Null Null interface
<cr>
r2(config-router)#^Z
access-list 100 deny ip any 172.16.1.0 0.0.0.255
access-list 100 permit ip any any
Notice that the route to block is listed as the destination address in the access-list and not the source address.
r2(config)#router igrp 100
r2(config-router)#distribute-list 1 in ?
Ethernet Ethernet IEEE 802.3
Loopback Loopback interface
Null Null interface
<cr>
r2(config-router)#distribute-list 1 in ethernet ?
<0-1> Ethernet interface number
r2(config-router)#distribute-list 1 in ethernet 0 ?
<cr>
r2(config-router)#distribute-list 1 in ethernet 0/0
r2(config-router)#^Z
We can filter routes through a specific interface. If the route advertisement is learned through a different interface it will not be filtered.
r2(config)#router igrp 100
r2(config-router)#distribute-list 1 in ?
Ethernet Ethernet IEEE 802.3
Loopback Loopback interface
Null Null interface
<cr>
r2(config-router)#distribute-list 1 in ethernet ?
<0-1> Ethernet interface number
r2(config-router)#distribute-list 1 in ethernet 0 ?
<cr>
r2(config-router)#distribute-list 1 in ethernet 0
r2(config-router)#^Z
For examples 3 and 4 the access-lists did not need to be modified from examples 1 and 2.
To filter outgoing route advertisements the distribute-list would be applied as an outgoing instead of as an incoming list. This also gives us four possibilities for filtering. For the examples assume that r2 wants to block the route to 172.16.4.1 in figure 8.1 so that r1 does not receive it.
1. Block the 172.16.4.0 route going out any interface using a standard IP access-list.
r2(config)#router igrp 100
r2(config-router)#distribute-list 1 ?
in Filter incoming routing updates
out Filter outgoing routing updates
r2(config-router)#distribute-list 1 out ?
Ethernet Ethernet IEEE 802.3
Loopback Loopback interface
Null Null interface
Bgp Border Gateway Protocol (BGP)
Connected Connected
Egp Exterior Gateway Protocol (EGP)
Eigrp Enhanced Interior Gateway Routing Protocol (EIGRP)
Igrp Interior Gateway Routing Protocol (IGRP)
Isis ISO IS-IS
iso-igrp IGRP for OSI networks
ospf Open Shortest Path First (OSPF)
rip Routing Information Protocol (RIP)
static Static routes
<cr>
r2(config-router)#distribute-list 1 out
r2(config-router)#^Z
There are many more selections available for outbound filters than for inbound. These additional choices are covered in chapter 13, Route Redistribution. The access-list for example one would contain
access-list 1 deny 172.16.4.0 0.0.0.255
access-list 1 permit any
The route 172.16.4.0 will not be contained in r1s routing table after the filter has been applied.
r1#sh ip route
172.16.0.0/16 is subnetted, 4 subnets
I 172.16.5.0 [100/610] via 172.16.3.2, 00:00:03, Ethernet0
C 172.16.1.0 is directly connected, Loopback0
C 172.16.2.0 is directly connected, Loopback1
C 172.16.3.0 is directly connected, Ethernet0
The applied access-list can be shown using the show ip protocols command.
r2#show ip protocols
Routing Protocol is "igrp 100"
Sending updates every 90 seconds, next due in 18 seconds
Invalid after 270 seconds, hold down 280, flushed after 630
Outgoing update filter list for all interfaces is 1
Incoming update filter list for all interfaces is not set
Default networks flagged in outgoing updates
Default networks accepted from incoming updates
IGRP metric weight K1=1, K2=0, K3=1, K4=0, K5=0
IGRP maximum hopcount 100
IGRP maximum metric variance 1
Redistributing: igrp 100
Routing for Networks:
172.16.0.0
Routing Information Sources:
Gateway Distance Last Update
172.16.3.1 100 00:00:07
Distance: (default is 100)
2. Block the 172.16.4.0 route going out any interface using an extended IP access-list.
r2(config)#router igrp 100
r2(config-router)#distribute-list 100 out
r2(config-router)#^Z
access-list 100 deny ip any 172.16.4.0 0.0.0.255
access-list 100 permit ip any any
r2(config)#router igrp 100
r2(config-router)#distribute-list 1 out
r2(config-router)#distribute-list 1 out Ethernet 0
r2(config-router)#^Z
access-list 1 deny 172.16.4.0 0.0.0.255
access-list 1 permit any
r2(config)#router igrp 100
r2(config-router)#distribute-list 1 out
r2(config-router)#distribute-list 1 out Ethernet 0
r2(config-router)#^Z
access-list 1 deny 172.16.4.0 0.0.0.255
access-list 1 permit any
Command: Exit
Purpose: Exit router configuration mode and enter global configuration mode.
r2(config)#router igrp 100
r2(config-router)#exit
r2(config)#
Command: Help
Purpose: Get help on help
r2(config)#router igrp 100
r2(config-router)#help
Help may be requested at any point in a command by entering
a question mark '?'. If nothing matches, the help list will
be empty and you must backup until entering a '?' shows the
available options.
Two styles of help are provided:
1. Full help is available when you are ready to enter a
command argument (e.g. 'show ?') and describes each possible
argument.
2. Partial help is provided when an abbreviated argument is entered
and you want to know what arguments match the input
(e.g. 'show pr?'.)
Command: maximum-paths
Purpose: Forward packets over multiple paths.
r1(config-router)#maximum-paths ?
<1-6> Number of paths
r1(config-router)#maximum-paths 3 ?
<cr>
IGRP can be used to distribute traffic on up to six routes to the same destination. The maximum-paths allows the setting of the number of paths, if they exist, over which traffic can be distributed to the same destination network.
Command: neighbor
Purpose: Specify a neighbor on a non-broadcast network.
For NBMA networks such as X.25 and frame-relay additional configuration information is needed to propagate IGRP routing updates. The neighbor command would be needed in order for IGRP updates to cross a frame-relay cloud. The neighbor command can be used on a multi-access network (ethernet) in conjunction with the passive-interface command as we shall see.
Command: Network
Purpose: To inform IGRP which networks to advertise and out which interfaces to advertise. Any active interface that has an IP address that is contained in the network command will be used to send and receive IGRP routing updates.
Command: No
Purpose: Used to negate configuration commands.
The no command is used to undo previous configuration commands. If we decide for example, not to advertise a network, remove a distribution list, or remove an administrative distance modifier we would use the no command.
r1(config)#router igrp 100
r1(config-router)#no network 172.16.0.0
r1(config-router)#no distribute-list 100 out
r1(config-router)#no distance 130
r1(config-router)#^Z
Command: offset-list
Purpose: Add or subtract an offset from IGRP or RIP metrics.
An offset list is used to adjust the metric of routes in incoming or outgoing IGRP updates using a standard IP access-list.
r1(config)#router igrp 100
r1(config-router)#offset-list ?
<0-99> Access list of networks to apply offset (0 selects all networks)
r1(config-router)#offset-list 1 ?
in Perform offset on incoming updates
out Perform offset on outgoing updates
r1(config-router)#offset-list 1 in ?
<0-2147483647> Offset
r1(config-router)#offset-list 1 in 50 ?
Ethernet Ethernet IEEE 802.3
Loopback Loopback interface
Null Null interface
<cr>
r1(config-router)#offset-list 1 in 50
r1(config-router)#^Z
access-list 1 permit any
r1#clear ip route *
r1#show ip route
172.16.0.0/16 is subnetted, 5 subnets
C 172.16.4.0 is directly connected, Loopback0
C 172.16.5.0 is directly connected, Loopback1
I 172.16.1.0 [100/660] via 172.16.3.1, 00:00:01, Ethernet0
I 172.16.2.0 [100/660] via 172.16.3.1, 00:00:01, Ethernet0
C 172.16.3.0 is directly connected, FastEthernet0/0
The form offset-list 0 in 50 could have been used to achieve the same result. Using an access-list number of 0 has the effect of applying the offset to all routes.
r1(config-router)#offset-list 1 in 50
access-list 1 permit 172.16.4.0 0.0.0.255
r1#show ip route
172.16.0.0/16 is subnetted, 5 subnets
I 172.16.4.0 [100/660] via 172.16.3.2, 00:00:04, FastEthernet8/0
I 172.16.5.0 [100/610] via 172.16.3.2, 00:00:04, FastEthernet8/0
C 172.16.1.0 is directly connected, Loopback0
C 172.16.2.0 is directly connected, Loopback1
C 172.16.3.0 is directly connected, FastEthernet8/0
r1(config)#router igrp
r1(config-router)#offset-list 1 out ?
<0-2147483647> Offset
r1(config-router)#offset-list 1 out 50 ?
Ethernet Ethernet IEEE 802.3
Loopback Loopback interface
Null Null interface
<cr>
r1(config-router)#offset-list 1 out 50
r1(config-router)#^Z
access-list 1 permit 172.16.0.0 0.0.255.255
r2#show ip route
172.16.0.0/16 is subnetted, 5 subnets
I 172.16.4.0 [100/660] via 172.16.3.2, 00:00:01, FastEthernet8/0
I 172.16.5.0 [100/660] via 172.16.3.2, 00:00:01, FastEthernet8/0
C 172.16.1.0 is directly connected, Loopback0
C 172.16.2.0 is directly connected, Loopback1
C 172.16.3.0 is directly connected, FastEthernet8/0
Again, we could have used access-list 0 to apply the offset to all routes.
Applied offset-lists can be seen by using the show ip protocols command
r1#show ip protocols
Routing Protocol is "igrp 100"
Sending updates every 90 seconds, next due in 24 seconds
Invalid after 270 seconds, hold down 280, flushed after 630
Outgoing update filter list for all interfaces is not set
Incoming update filter list for all interfaces is not set
Outgoing routes will have 50 added to metric if on list 1
Default networks flagged in outgoing updates
Default networks accepted from incoming updates
IGRP metric weight K1=1, K2=0, K3=1, K4=0, K5=0
IGRP maximum hopcount 100
IGRP maximum metric variance 1
Redistributing: igrp 100
Routing for Networks:
172.16.0.0
Routing Information Sources:
Gateway Distance Last Update
172.16.3.2 100 00:01:02
Distance: (default is 100)
access-list 1 permit 172.16.1.0 0.0.0.255
r2#sh ip route
172.16.0.0/16 is subnetted, 5 subnets
C 172.16.4.0 is directly connected, Loopback0
C 172.16.5.0 is directly connected, Loopback1
I 172.16.1.0 [130/660] via 172.16.3.1, 00:00:02, Ethernet0
I 172.16.2.0 [130/610] via 172.16.3.1, 00:00:02, Ethernet0
C 172.16.3.0 is directly connected, Ethernet0
Command: passive-interface
Purpose: Suppress routing updates on an interface.
The passive-interface command stops routing updates from being sent out an interface but routing updates received on a passive-interface will still be received and processed. For example, if the 172.16.3.1 interface of r1 in figure 9.1 is made passive, r2 will not receive routing updates from r1 (because they are not being sent) but r1 will still receive routing updates from r2.
r1(config)#router igrp 100
r1(config-router)#passive-interface Ethernet 0
r1(config-router)#^Z
r1#clear ip route *
r1#sh ip route
172.16.0.0/16 is subnetted, 5 subnets
I 172.16.4.0 [100/610] via 172.16.3.2, 00:00:47, FastEthernet8/0
I 172.16.5.0 [100/610] via 172.16.3.2, 00:00:47, FastEthernet8/0
C 172.16.1.0 is directly connected, Loopback0
C 172.16.2.0 is directly connected, Loopback1
C 172.16.3.0 is directly connected, FastEthernet8/0
r2#sh ip route
172.16.0.0/16 is subnetted, 3 subnets
C 172.16.4.0 is directly connected, Loopback0
C 172.16.5.0 is directly connected, Loopback1
C 172.16.3.0 is directly connected, Ethernet0
IGRP normally sends routing updates as a broadcast on an ethernet network which all hosts must process. To prevent broadcasts the passive-interface command can be used in conjunction with the neighbor command. If we want router r1 in Figure 9.1 to send routing updates to a unicast address we can use the following configuration:
Router igrp 100
Passive-interface ethernet 0
Neighbor 172.16.3.2
Command: redistribute
Purpose: Redistribute information from another routing protocol.
This command is covered in chapter 13, Protocol Redistribution.
Command: timers
Purpose: Adjust routing timers.
The IGRP timers can be viewed by using the command show ip protocols and shown below.
r2#show ip protocols
Routing Protocol is "igrp 100"
Sending updates every 90 seconds, next due in 32 seconds
Invalid after 270 seconds, hold down 280, flushed after 630
Outgoing update filter list for all interfaces is not set
Incoming update filter list for all interfaces is not set
Default networks flagged in outgoing updates
Default networks accepted from incoming updates
IGRP metric weight K1=1, K2=0, K3=1, K4=0, K5=0
IGRP maximum hopcount 100
IGRP maximum metric variance 1
Redistributing: igrp 100
Routing for Networks:
172.16.0.0
Routing Information Sources:
Gateway Distance Last Update
172.16.3.1 100 00:00:27
Distance: (default is 100)
The update timer (90 seconds) is the time between routing updates sent out of an interface. Routes are invalid after 270 seconds. This means that if a known route is not received within 270 seconds of the last advertisement for this route, the route will be declared invalid. The hold down time is the time that a route will remain in the routing table before a new advertisement for that route will be accepted by the router. The flush time is the amount of time that must expire before a route is removed from the routing table if no routing updates for this route have been received. One timer value that does not appear in the list is the sleep time. The sleep time is the amount of time a IGRP routing update will be delayed before transmission and is measured in milliseconds. The sleep time parameter is optional and has a default value of zero. In most cases, you should probably never adjust the IGRP timers. They have been selected to provide optimum performance form the protocol. But if you must, here is the syntax.
r2(config)#router igrp 100
r2(config-router)#timers ?
basic Basic routing protocol update timers
r2(config-router)#timers basic ?
<0-4294967295> Interval between updates
r2(config-router)#timers basic 91 ?
<1-4294967295> Invalid
r2(config-router)#timers basic 91 271 ?
<0-4294967295> Holddown
r2(config-router)#timers basic 91 271 281 ?
<1-4294967295> Flush
r2(config-router)#timers basic 91 271 281 631 ?
<1-4294967295> Sleep time, in milliseconds
<cr>
r2(config-router)#timers basic 91 271 281 631 10 ?
<cr>
r2(config-router)#timers basic 91 181 181 241 10 ?
<cr>
The new timer values can be verified by using the show ip protocols command.
r2#show ip protocols
Routing Protocol is "igrp 100"
Sending updates every 91 seconds, next due in 77 seconds
Invalid after 271 seconds, hold down 281, flushed after 631
Outgoing update filter list for all interfaces is not set
Incoming update filter list for all interfaces is not set
Default networks flagged in outgoing updates
Default networks accepted from incoming updates
IGRP metric weight K1=1, K2=0, K3=1, K4=0, K5=0
IGRP maximum hopcount 100
IGRP maximum metric variance 1
Redistributing: igrp 100
Routing for Networks:
172.16.0.0
Routing Information Sources:
Gateway Distance Last Update
172.16.3.1 100 00:01:07
Distance: (default is 100)
Command: traffic-share
Purpose: Algorithm for computing traffic share for alternate routes.
When multiple unequal cost routes exist to the same destination network, the traffic-share command controls how packets are distributed among the different paths. There are two possibilities for traffic-share, balanced and minimum. Balanced mode will distribute traffic in proportion to the metrics of the routes. The min traffic-share option will only use the routes that have minimum costs. The default for traffic-share is balanced.
r2(config-router)#traffic-share ?
balanced Share inversely proportional to metric
min All traffic shared among min metric paths
r2(config-router)#traffic-share balanced
or
r2(config-router)#traffic-share min ?
Command: validate-update-source
Purpose: Perform sanity checks against source address of routing updates.
This function is enabled by default. The source address is checked to see if it is a proper address. In figure 9.1, IGRP routing updates received by r1 on interface 172.16.3.1 should be received from a IGRP router on this network. If the source address is not on the network then the routing update will be rejected. To disable this feature use the no command in conjunction with the validate-update source command.
r1(config)#router igrp 100
r1(config-router)#no validate-update-source
Command: Variance
Purpose: Control load balancing variance.
IGRP can have up to six routes to the same destination in the routing table. Multiple routes to the same destination will only be installed in the routing table if there cost, or metric, passes a test which will be illustrated with figure 9.6.
Router r1 in figure 9.6 has two routes to network 172.16.0.0. The first route is directly to router r2 will a cost of A. The second route is through router r2 with a cost of B. Router r1 will include the route through r2 if two conditions are met.
Needless to say, you wont be making many changes to the variance! But if you must, the command is given below.
r2(config-router)#variance ?
<1-128> Metric variance multiplier
r2(config-router)#variance 2 ?
<cr>
Debugging IGRP
The network in Figure 9.1 is used to illustrate the IGRP debugging commands. There are two commands that can be used for debugging IGRP. The first is the command
r1#debug ip igrp events
IGRP event debugging is on
Which produces the console output
IGRP: sending update to 255.255.255.255 via Loopback0 (172.16.1.1)
IGRP: Update contains 4 interior, 0 system, and 0 exterior routes.
IGRP: Total routes in update: 4
IGRP: sending update to 255.255.255.255 via Loopback1 (172.16.2.1)
IGRP: Update contains 4 interior, 0 system, and 0 exterior routes.
IGRP: Total routes in update: 4
IGRP: sending update to 172.16.3.2 via FastEthernet8/0 (172.16.3.1)
IGRP: Update contains 3 interior, 0 system, and 0 exterior routes.
IGRP: Total routes in update: 3
IGRP: received update from 172.16.3.2 on FastEthernet8/0
IGRP: Update contains 2 interior, 0 system, and 0 exterior routes.
IGRP: Total routes in update: 2
r2#debug ip igrp ?
events IGRP protocol events
transactions IGRP protocol transactions
r1#debug ip igrp events ?
A.B.C.D IP address of neighbor
<cr>
r1#debug ip igrp events 172.16.3.2 ?
<cr>
r1#debug ip igrp events 172.16.3.2
IGRP event debugging is on for address 172.16.3.2
Which produces the console output
IGRP: sending update to 255.255.255.255 via Ethernet0 (172.16.3.1)
IGRP: Update contains 2 interior, 0 system, and 0 exterior routes.
IGRP: Total routes in update: 2
IGRP: received update from 172.16.3.2 on Ethernet0
IGRP: Update contains 2 interior, 0 system, and 0 exterior routes.
IGRP: Total routes in update: 2
Notice the debug ip igrp events displays all sent and received igrp routing updates and debug ip igrp events 172.16.3.2 displays only sent and received updates with a particular neighbor.
r1#debug ip igrp transactions
IGRP protocol debugging is on
IGRP: received update from 172.16.3.2 on Ethernet0
subnet 172.16.4.0, metric 610 (neighbor 501)
subnet 172.16.5.0, metric 610 (neighbor 501)
IGRP: sending update to 255.255.255.255 via Ethernet0 (172.16.3.1)
subnet 172.16.1.0, metric=501
subnet 172.16.2.0, metric=501
IGRP: sending update to 255.255.255.255 via Loopback0 (172.16.1.1)
subnet 172.16.4.0, metric=610
subnet 172.16.5.0, metric=610
subnet 172.16.2.0, metric=501
subnet 172.16.3.0, metric=110
IGRP: sending update to 255.255.255.255 via Loopback1 (172.16.2.1)
subnet 172.16.4.0, metric=610
subnet 172.16.5.0, metric=610
subnet 172.16.1.0, metric=501
subnet 172.16.3.0, metric=110
r1#debug ip igrp transactions 172.16.3.2
IGRP protocol debugging is on for address 172.16.3.2
IGRP: sending update to 255.255.255.255 via Ethernet0 (172.16.3.1)
subnet 172.16.1.0, metric=501
subnet 172.16.2.0, metric=501
IGRP: received update from 172.16.3.2 on Ethernet0
subnet 172.16.4.0, metric 610 (neighbor 501)
subnet 172.16.5.0, metric 610 (neighbor 501)
r1#debug ip igrp transactions 172.16.3.2 172.16.4.0
IGRP protocol debugging is on for address 172.16.3.2
for target route 172.16.4.0
IGRP: received update from 172.16.3.2 on Ethernet0
subnet 172.16.4.0, metric 610 (neighbor 501)
IGRP: sending update to 255.255.255.255 via Ethernet0 (172.16.3.1)
The debug ip igrp events provides a summary of the sent and received IGRP messages and debug ip igrp transactions provides more detailed information such as the actual routes sent or received, the metrics, and the neighbor. If you have configured an IGRP network but the routing tables do not contain the routes that were expected, debugging IGRP is a valuable tool for determining what the protocol is really doing and can lead you in the right direction for resolving IGRP problems.
![]() ![]() Chapter: 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 |
Reserve your copy at a Beta Bookstore near you! |
Contact Bet@books © 1998 The McGraw-Hill Companies, Inc. All rights reserved. Any use of this Beta Book is subject to the rules stated in the Terms of Use. |